home *** CD-ROM | disk | FTP | other *** search
/ PC Open 92 / PC Open 92 CD 1.bin / internet / AmphetaDesk / docs / CHANGELOG < prev    next >
Encoding:
Text File  |  2002-10-29  |  39.0 KB  |  680 lines

  1. ###############################################################################
  2. # AmphetaDesk                                           (c) 2000-2002 Disobey #
  3. # CHANGELOG                               http://www.disobey.com/amphetadesk/ #
  4. ###############################################################################
  5.  
  6.  
  7. 0.94 (released )
  8.  
  9.  
  10. 0.93.1 (released October 31st, 2002)
  11.   - swapped out quasi's "$toencode = ~s/([^a-zA-Z0-9_\-.])/uc
  12.     sprintf("%%%02x",ord($1))/eg;" for URI::Escape's "$toencode =
  13.     uri_escape($toencode, "^a-zA-Z0-9_.-");". this performs the
  14.     same thing, but is crossplatform for MacPerl/MacOS.
  15.   - an rss feed's email is now saved in the channel opml.
  16.   - subscription data for a channel is now updated after each parse.
  17.   - if using the default settings, immediately save a mySettings.xml. fixes
  18.     a dumb minor (out of date?) bug where I had to pre-instruct people to "Save
  19.     My Settings" before they could follow mySettings.xml hacking instructions.
  20.   - we now save our channels and settings before shutting down.
  21.   - added frontends to start_radio_webserver and http_referer.
  22.   - awesome: mac classic version is working correctly (thanks Axel!).
  23.   - awesome: win95 version is working correctly (requires seperate download).
  24.   - bugfix: the Win32 gui now correctly maximizes the window when opening
  25.     from the systray, and we've moved it over to a doubleclick not a single.
  26.   - bugfix: if we have matching filenames, we now randomize to four places
  27.     not just two. this solves a rare circumstance where someone could
  28.     subscribe to 99 or more Moreover feeds - it's now 9999 (thanks, Kearney)
  29.   - feature: support for Radio Userland coffee mug icons. off by default.
  30.   - featurette: implemented geomisk's old "tidy_house" routine as
  31.     MyChannels::remove_old_channel_files. thanks again, geomisk.
  32.   - bugfix: we weren't correctly defaulting to "index.html" on a 
  33.     directory webserver request within Win32 (we forgot \\ in our regexp).
  34.   - removed the following code: $SIG{PIPE} = 'IGNORE' unless $^O =~ /Mac/;
  35.   - we no longer @EXPORT head() from AmphetaDesk::WWW. the explanation
  36.     is one of fickleness, but it comes down to removing a warning
  37.     about redefining CGI.pm's head(). This shouldn't be that much
  38.     of a problem anyways since head() was ONLY used within WWW.pm,
  39.     and people can still suck it in with "use AmphetaDesk::WWW qw/head/"
  40.     if they absolutely need to. chalk this one up to my analness.
  41.   - moved webserver code from amphetadesk.pm to webserver.pm.
  42.   - removed the following code: BEGIN { $SIG{'__WARN__'} = sub { 
  43.     warn $_[0] unless (caller())[0] =~ /Win/; } }. This was being used
  44.     to stop copious Win32::GUI warnings. These have been fixed in the
  45.     latest Win32::GUI download. Thanks Aldo Capini!
  46.   - templates: the index.html, my_channels.html, and add_a_channel.html
  47.     were changed over to a new to_browser/send_to_browser system that 
  48.     cuts out the zillions of concat's we were doing before. since perl
  49.     handles joining arrays better than concating strings, this should
  50.     increase speed of those pages, plus reduce memory usage. small template
  51.     things (like the headers, the popup, the settings page, etc.) send
  52.     directly to $OUT as usual, since the array gains would be infintesimal.
  53.   - bugfix: added 'use lib' to wrapper script for explicit inclusion into
  54.     the Win32 version (stupid perl2exe, argh). Thanks, deus_ex.
  55.   - featurette: added ReuseAddr to our HTTP::Daemon for address uh, reuse.
  56.   - moved the template parsing code into the new AmphetaDesk::Templates.
  57.   - featurette: support for <content:encoded> from mod_content.
  58.   - docs: kudos moved from news page to its own, and was updated.
  59.   - bugfix: removed our ugly img onClick hack, and replaced it with a
  60.     proper a/href, with "return false" set on the js for non-js browsers.
  61.   - bugfix: importing feeds no longer clobbers existing attributes if
  62.     the feed already exists (we append imported attributes to existing entries).
  63.   - bugfix: we no longer crash on feeds that have more than one <channel>.
  64.   - docs: lots of changes to the finding_more.html page, including adding
  65.     a stronger bookmark, fixing the broken FoRK example, warning about
  66.     Sherch's age, and adding new entries: RacingNewsOnline.com, NWFusion.com,
  67.     Mail-Archive.com, Daypop.com, fyuze.com, Snewp.com, and Yahoo Finance. 
  68.   - docs: add kudos.html to move it off the news page.
  69.   - featurette: now supports authenticated proxies (Ian Dash and others).
  70.   - bugfix: we handle the rss 2.0 "id" attributes on item (XML::Simple
  71.     turns id's automatically into another tree level), and also no longer
  72.     die if there is only one item in a channel (Jeremy Zawodny).
  73.   - code shui: removed a level of indentation in our AmphetaDesk.pm
  74.     by "next unless defined $connection" instead of "if ()".
  75.   - bugfix: under win32, we set our "already clicked" menu item checker
  76.     for "Open Browser" immediately, as opposed to after the browser has
  77.     been opened. this fixes a race condition where an impatient user
  78.     could request to "Open Browser" before the first one finishes.
  79.   - bugfix: amphetadesk now spits out http headers (thanks Dave Beckett).
  80.   - featurette: png images may now be displayed.
  81.   - security fix: you can now choose whether to allow AmphetaDesk
  82.     to accept outside (nonlocal) connections. This is determined
  83.     by a new user_allow_nonlocal_conn setting, and defaults to "no".
  84.   - security fix: URLs are now checked for funny business.
  85.   - converted some more date instances to HTTP::Date.
  86.   - bugfix: we no longer die on a myChannels.opml with only one channel.
  87.   - bugfix: 404 pages no longer divulge the full path on the HD (Eric).
  88.   - updated the README.txt to suggest expat 1.95.3 instead of .2.
  89.   - bugfix/win32: worked around segfault concerning UTF-8 BOMs.
  90.   - bugfix/os x: updated to expat 1.95.3 to fix UTF-8 BOM segfault.
  91.   - bugfix: our shutdown() to the webserver wasn't formatted correctly.
  92.   - bugfix: fixed "Argument "" isn't numeric in bitwise or" error on 
  93.     line 53 of the Mac OS X gui. $flags was '', but now starts out as 0.
  94.   - bugfix: we don't echo that we're loading the OPML file twice anymore.
  95.   - bugfix: os x wrapper comments no longer echo if we run from the shell.
  96.   - bugfix: the AmphetaDesk.log was opened in ~ and not the install dir.
  97.  
  98.  
  99. 0.93 (released June 13th, 2002)
  100.   - updated to the latest XML::Simple and Text::Template.
  101.   - documentation updates. lots. still more to do.
  102.   - all images changed over to the new set done by Eric Vitiello. Rock.
  103.   - fixed minor bug where invalid scriptingNews would say there
  104.     were no parsable items as opposed to an xml parsing error.
  105.   - to prevent our popup delete window from bring the view back to the
  106.     top of the page, we moved the onClick to the image itself, and used a
  107.     cursor style to duplicate the UI element. see for crossplatform notes:
  108.     http://developer.netscape.com/evangelism/docs/articles/cursor/
  109.   - added email icons to the headers of the templates.
  110.   - tweaked the index.html template a bit to prevent runaway <pre>
  111.     tags, and to make the entire page load faster (thanks redmonk).
  112.   - lots of Classic Mac fixes here and there.
  113.   - added toplevel README.txt's for the subdirectories.
  114.   - added encode_to_dec into AmphetaDesk::Utilities, which fixes the
  115.     issue of del_urls not working properly when the channels URL
  116.     has it's own query string (their query string was being read as ours).
  117.   - proxy configuration via mySettings.xml has been added.
  118.   - final round of alpha testing begins.
  119.   - quickie drop in of environment proxy code (thanks Klaus).
  120.   - Compress::Zlib added to AmphetaDesk.pl. Preparation for v0.94.
  121.   - the channel_count is now spit out into the log so much.
  122.   - moved special globals from "vars" to "my" instead.
  123.     "vars" is deprecated for 5.6.0+, but we're not 
  124.     going to "our" since we want perl 5.004 compat.
  125.   - moved all our stupid date code in MyChannels.pm to use
  126.     the matching functions from HTTP::Date. Much nicer.
  127.   - Radio Userland, AmphetaDesk, and similar OPML files can now be
  128.     imported from a URL via "add_url". Since these files can be
  129.     HuuUGe, we don't download the channels at the time of the 
  130.     import, but rather on the next restarting of AmphetaDesk.
  131.   - Radio Userland mySubscriptions.opml imports are now possible, 
  132.     assuming you rename to myChannels.opml and stick in data/.
  133.   - added "user_channels_check_interval" which AmphetaDesk will use
  134.     to repetitively check for new channels every X minutes. The minimum
  135.     setting (which can not be changed) is 2 minutes.
  136.   - added an email/envelope graphic to the templates page, which 
  137.     will only show if we can figure out an email from the feed.
  138.   - CDATA'd rdf:values from RSS 1.0's mod_content are now shown.
  139.   - scriptingNews support has been added back in, same data structure.
  140.   - instead of using Cwd (current working directory), we now use FindBin
  141.     to figure out where we are in the file system, making relative 
  142.     directories much safer to use. this fixes a bug where AmphetaDesk
  143.     could be installed in /usr/bin, but would break if a user tried
  144.     it from the /tmp directory (since the relative paths would be 
  145.     to /tmp and not /usr/bin). This was really only an issue on Linux.
  146.   - default template has moved to templates/default, and gui/ has moved to
  147.     templates/default/gui, allowing future support for template subdirs.
  148.     also did some quick edits in Settings.pm to support the new subdir.
  149.   - strip_newlines_and_tabs data in myChannels.opml.
  150.   - cleaned up some uninit warnings in strip_newlines_and_tabs.
  151.   - the my_settings.html now works correctly.
  152.   - if a channel has no items to display, then we show an error in the HTML.
  153.   - second round of alpha testing has begun.
  154.   - added popup window for deleting off the main page, thanks to eric.
  155.   - errors in the RSS feed are now passed to the template for display.
  156.   - switched over to http::daemon and cgi.pm as opposed to homebrew.
  157.   - template system has been made more generic, and there are now
  158.     no "special" template names, like add_a_channel.html or my_channels.html.
  159.     "index.html" is, however, required if you want auto-directory serving.
  160.   - fixed up the various GUI libraries.
  161.   - get_response and set_response have been added to ::Utilities,
  162.     which are quickie routines to set messages to be displayed 
  163.     in the HTML pages. The header template has also been updated
  164.     to show these messages if they exist. Once their shown, they're
  165.     permanently removed until the next set_response is triggered.
  166.   - we no longer need the "id" attribute in our OPML, as we've
  167.     moved to using the xmlurl as the unique id (a safer choice).
  168.   - ?del is now ?del_url to more closely match ?add_url.
  169.     likewise, a ?del_urls now exists as well to match ?add_urls.
  170.   - if get_my_channels_data isn't passed a $setting to retrieve,
  171.     then it will return a hash ref of all settings. this allows the
  172.     templates to be slimmer (less calls to that routine).
  173.   - updated README.txt to be remotely applicable.
  174.   - stopped Win32 DoEvents from logging thousands of warnings.
  175.   - first round of alpha testing has begun.
  176.  
  177.   - split the template pages into header/footers.
  178.   - added "title" attributes to most of the template pages.
  179.   - fixed the UserAgent string so it's more in line with others.
  180.   - added "last modified" and "added" dates to my_channels.html
  181.   - more good code from eric, which involves checking for duplicate
  182.     filenames and URLs, as well as fixing a moreover title bug that
  183.     caused duplicate filenames to be a regular issue.
  184.   - eric vitello jumps on as a developer. contributes good code to
  185.     getting MyChannels.pm up to snuff. this has now been moved over to
  186.     Text::Template and is much smarter code. Usability wise, people now
  187.     "check" to delete the item, instead of unchecking. The opposite of
  188.     what existed before, but makes a bit more sense (the old way only
  189.     existed like that because of lazy programming).
  190.   - we no longer consult the filesystem for the last time a channel
  191.     has been downloaded (we now consult date_downloaded, which is a
  192.     new attribute in our myChannels.opml file) mirror() still checks
  193.     against the filesystem, but that's normal / intentional.
  194.   - "request_timeout" added a setting, and "strict_xml" removed.
  195.   - added {app}->{os}, which gets spitout in the logfile.
  196.   - we no longer need to ship a mySettings.xml file, as one is
  197.     created at runtime if none can be found. this helps upgrades too
  198.     as we will no longer have to worry about overwriting. this has
  199.     also been addressed with myChannels.opml.
  200.   - we now use File::Spec to figure out paths, not $dlmtr;
  201.   - our logfile is now opened FIRST. the logfile location has
  202.     changed to the root directory for ease of finding and sending.
  203.     logfiles are now kept around until they're over 250k.
  204.   - error() is now just a wrapper around note() since we can
  205.     be pretty sure that the logfile is opened correctly.
  206.   - modularization has begun.
  207.  
  208.   - modified the URLs so that they are relative, making it easier for
  209.     AmphetaDesk to be used over a network (previously links referred
  210.     back to the user's local machine, not necessarily the Ampheta box).
  211.   - when minimizing the window on Win32, it now goes directly to the
  212.     Systray, as opposed to going to the taskbar, and doing weird stuff.
  213.   - fixed bug where the channel count wouldn't be updated after a 
  214.     modification of the user's myChannels.opml. the counting should
  215.     probably move into the actual create routine.
  216.   - installed INTerrupt handler so that users who Ctrl-C in a Linux
  217.     or OSX terminal will have the webserver shut down properly. 
  218.   - added Simon's Kittle code to stop Linux from crashing on add channel.
  219.   - fixed bug that would cause the myChannels.opml to be erased if
  220.     bad GET based data was passed off to it. its still affected by POST.
  221.   - the socket read timeout error is much more userfriendly now.
  222.   - README.txt updated with upgrade notes and Linux install walkthrough.
  223.   - added a number of user quotes to the docs/news.htm page, and
  224.     included a quick little blurb about them on the docs/index.htm.
  225.     likewise, reworded some of the docs/index.htm options to be less scary.
  226.   - we've changed how we handle CDATA sections. previously, we would
  227.     remove any CDATA tags when "fix XML" was turned on. now, we leave
  228.     them alone, but add a conditional to not encode links if we see
  229.     a CDATA in the feed (previously, we "fixed" links that were not
  230.     properly encoded - this caused problems with CDATA sections,
  231.     where the links could be unencoded). this does not effect
  232.     any <strict_xml> parsing (thanks Steve Yost).
  233.   - old versions added to docs/index.htm.
  234.   - added README.txt as "Installation" notes to docs/index.htm.
  235.   - added OS X note concerning "which version?" to docs/index.htm.
  236.   - added "shared libs" and "README.txt" docs/to files_and_dirs.htm.
  237.   - the screenshots.htm now loads the ss- images from disobey.com.
  238.     this is so we don't have to ship them in the archive files, as
  239.     they were taking up an awful lot of space.
  240.   - a simple docs/README.txt file has been added.
  241.   - original Artistic License replaced with NcFTP revision.
  242.   - build instructions (docs/build.htm) have been added.
  243.  
  244.  
  245. 0.92 (released October 5th, 2001)
  246.   - sigh. Mac GUI has been put on hold again. show stopping bug.
  247.   - some more Mac GUI fixes. it doesn't scale very well though (at 
  248.     120 channels, which is my selection, it slows to a insane crawl).
  249.   - went through the TODO and move a bunch of stuff to "after 1.0" so
  250.     that we can hurry up and get a flippin' release out.
  251.   - removed spitout of http headers and how they were parsed.
  252.   - fixed bug where files name like picture$2312 (a common Manilla
  253.     construct) would cause us to die if they were used in a relative
  254.     link and not as an absolute.
  255.   - fixed "broken pipe" program killer that happened when we tried to
  256.     read from an image file that didn't exist locally (caused due to
  257.     relative links within an rss feed).
  258.   - fixed some core problems with how we handle entity encoding. now,
  259.     we only encode entities if the channel has failed an initial parse
  260.     using XML::Simple. This allows unencoded entities from US-ASCII
  261.     types to be properly shown in AmphetaDesk (thanks again to 
  262.     Karl Ove Hufthammer for being the pesky foreign user and making
  263.     sure we get this crap right). we do, however, encode some 
  264.     entities that are common when people are using the 'windows'
  265.     encoding.
  266.   - fixed a problem with <title>'s having an attribute (for example
  267.     xml:lang="eng"), which would cause the <title> tag to not display.
  268.     now, if we find something similar, we check a bit deeper and 
  269.     try to rectify the situation. we only do this for title, and not
  270.     description (description gets far too fun with possible attributes,
  271.     possible unencoded HTML, etc). Thanks again to the ever observant
  272.     Karl Ove Hufthammer.
  273.   - added a "strict_xml" configuration setting. turning this setting
  274.     on (via manual editting of mySettings.xml) will cause AmphetaDesk
  275.     to not try ANY fixing of common problems with XML feeds. basically,
  276.     we sent the feed unchanged to the parser and hope the user got it
  277.     right. this is more conducive to "if the XML is wrong, then the
  278.     parser should not display" ideal.
  279.   - after going through all of the logfiles that people have sent, we've
  280.     fixed a number of minor errors: <br>'s are now converted to <br />
  281.     because it's simple to do; ´'s are now converted to apostraphes
  282.     (search for ´ in the code if you want more info); Happily enough,
  283.     most of the display errors in v0.91 have been fixed with the change
  284.     in parsing of this version.
  285.   - the webserver will now try to jump onto three ports before dying.
  286.     these are all configurable, of course, and the doc's have been updated.
  287.     there was a change in logic - {urls}->{port} includes the currently
  288.     chosen and running port of AmphetaDesk. likewise, the new {port_default},
  289.     {port_secondary} and {port_tertiary} point to the three possible
  290.     port choices.
  291.   - fixed some comment in the various OS libraries.
  292.   - we now correctly close the logfile and webserver before exiting.
  293.   - fixed silly != / ne bug in Linux.pl.
  294.   - fixed an infinite loop when an http server redirects us repeatedly.
  295.   - in channel display, we no longer show blank entries or HASH(ddddd)
  296.     entries (which can manifest because of unencoded HTML).
  297.   - warnings / notes improved upon. most user logging has been configured
  298.     to spit out the program name and to report the error to the program's
  299.     email address. other warnings and so forth have been tightened as well.
  300.   - drastically reduced the amount of "quit AmphetaDesk" error messages -
  301.     instead, we try to continue on with limited functionality. now, we only
  302.     die if one of required files or directories can not be found, if we 
  303.     can't load the myChannels.opml, and if we couldn't start the webserver.
  304.     We no longer quit when the myChannels.opml file can't be saved,
  305.     when we can't load the channel list, when a valid URL wasn't passed,
  306.     or when we can't find a template file (as any file that is not
  307.     defined internally could become a template file, such as relative
  308.     links within an RSS file, etc.).
  309.   - Error messages now come with more verbiage containing a possible
  310.     solution. All admonish the user to report the error to {app}->{email}
  311.     when the problem is more than just a file missing (reinstall, bucko!).
  312.   - fixed line feed issues in our log files on the Mac.
  313.   - added "letter_next" and "letter_prev" for use within the 
  314.     "add a channel" page. this allows quicker browsing than having
  315.     to hunt and peck the right letter and screw up.
  316.   - cleaned up some bad error messages in the "add unknown channel"
  317.     code, as well as added a log message to the GUI window when
  318.     the channel was successfully added.
  319.   - the title column of the "add a channel" and "my channels" 
  320.     pages has been set to 200 pixels to prevent annoying resizing.
  321.   - new html-in-rss parser has been added, which listens only to
  322.     encoded HTML tags (i sincerely doubt we'll ever support unencoded
  323.     HTML, cos that's just so anti-RSS that it drives me nuts).
  324.   - show stopping entries like <xml> and <title> are now fixed.
  325.   - all links now listen to the users target= preference.
  326.   - added &gui_after_html_display, necessary for the Macintosh GUI;
  327.     stubs have been added to the Windows and Linux GUI libraries.
  328.   - added "Tools" menu to the Windows GUI.
  329.   - we now correctly close our logfile at the end of a run.
  330.   - various minor html documentation changes for IE6 beta viewing.
  331.   - minor template changes for better viewing in Opera and IE6 beta.
  332.   - standardized all documentation to use "AmphetaDesk" and not 
  333.     any derivatives there of (like "amphetaDesk" or "Amphetadesk").
  334.   - first attempt at Macintosh GUI has been committed.
  335.   - added screenshots and pirillo's custom skin to documentation.
  336.   - added the bottom navigation bar to docs to match ui templates.
  337.   - added NewsIsFree.com, Sherch.com and Network54.com to finding_more.htm.
  338.  
  339.  
  340. 0.91 (released July 2nd, 2001)
  341.   - fixed bug where we wouldn't close if our child process was still
  342.     hanging around (caused by forking to run a browser different than
  343.     the default and then not killing the bastard).
  344.   - fixed a silly bug that stopped encoded characters in a URL from
  345.     being accepted as part of a typed website address for the
  346.     "add an unknown channel" feature. this fix makes
  347.     NewsIsFree.com integration possible (and nifty!).
  348.   - AmphetaDesk no longer crashes when Opera has been set as the 
  349.     default browser (it worked fine when the path to Opera was 
  350.     specified in mySettings.xml). The bug was caused by Opera's
  351.     reliance on Multiple Document Interface (or so some more 
  352.     knowledgable people have told me).
  353.   - finally stopped resizing in the Windows gui.
  354.   - added right click menu to the systray icon for the Windows gui.
  355.   - added "refresh channels" and "open window" to the systray
  356.     icon for the Windows gui. and "exit" too, but that's boring.
  357.   - fixed some minor template problems with new channel listings.
  358.   - fixed a minor template form issue with Mozilla.
  359.   - changed the default letter to "0" in the "add a channel" 
  360.     page. that just makes more sense, since it's first in our nav.
  361.   - updated the three master channel lists.
  362.   - fixed bug in version check code that would get confused with
  363.     different types of line returns in the Macintosh version.
  364.   - we now check for duplicate entries in the "add a channel" list
  365.     based on xml url, not the title as we had previously done. this
  366.     fixes an obscure bug where channels with the same name would
  367.     be lumped (and by default, checked) into one entry.
  368.   - stderr is now redirected to our logfile. we also sleep after
  369.     spitting out any message for 10 seconds so that the DOS
  370.     window on Windows doesn't disappear too quickly.
  371.   - moved most of the divider lines into the respective routines.
  372.   - added a lot more logging information to help debug.
  373.   - added an error message for when the webserver dies. this lets
  374.     the Windows 2000 people know what the problem is and that we
  375.     know about it.
  376.   - in our &process_initial_request routine, we know check to see
  377.     if $url is defined before sending the results back. if $url
  378.     is undefined, we set it to the main page of AmphetaDesk (which
  379.     should work around some random browser idiocies when it actually
  380.     makes a request to the server, but a url can't be determined).
  381.   - server timeouts have been removed from &head and &get, as well
  382.     the timeout was lowered from 20 seconds to 10 seconds.
  383.   - we now print out the remote server headers if it doesn't contain
  384.     Content-Length or Last-Modified headers. that's just weird.
  385.   - Added $TEMPLATE->{total_my_channels}, $TEMPLATE->{total_channel_items},
  386.     and $TEMPLATE->{total_channels} which just provide various counts.
  387.     Find more information in the skinning.htm documentation.
  388.   - Some minor template changes after usability testing - removed some
  389.     of the more obscure terms, added some more whitespace, and duplicated
  390.     the navigation at the bottom of the page. Eventually, they'll be a 
  391.     template that will remove all this "helpful" crap for people who
  392.     know it all.
  393.   - Reduced the head() request to 512 bytes, instead of 2096.
  394.   - Added {app}->{url} into all HTTP User-Agent lines.
  395.   - Our checks for server headers in head() are now case insensitive.
  396.  
  397.  
  398. 0.90 (released May 29th, 2001)
  399.   - added UTF-8 character encoding meta tag to all XHTML documents,
  400.     thanks to Karl Ove Hufthammer for bringing this to us.
  401.   - template variables that were specifically used in the list_item
  402.     pages are now prefaced with "list_"... this is to prevent
  403.     confusion about template variables having the same name,
  404.     but different meanings based on what page was being shown.
  405.   - fixed <link_target>. instead of undef'ing, it defaults to 
  406.     "_blank". if someone wants links to open in the same window,
  407.     we set it to "_parent". that's a good solution. yeah.
  408.   - the settings <gui> was moved into <names>. it makes more sense.
  409.   - 'echofactor' removed from the "finding_more.htm" page.
  410.   - the 'www' directory has been renamed to 'templates'.
  411.   - "news and update" page added to the documentation. the
  412.     matching rss feed added to the default channel lists.
  413.   - <added> added to the service lists - in conjunction, we now show
  414.     channels which have been added in the past month in a different
  415.     background color, based on this value.
  416.   - <link_target> added to user preferences.
  417.   - More entries added to the finding_more.htm docs.
  418.   - Template changes: channel_title.html is now called
  419.     channel_header.html. likewise, channel_footer.html is now displayed
  420.     only if it exists. All template filenames have been renamed to
  421.     .html, and channel_list_item_new.html has been added (which is
  422.     displayed if the currently nonexistant <added> tag is newer than a
  423.     month). There has also been tons of template variable changes, as
  424.     well as the addition of a rather mediocre skinning.htm to the
  425.     documentation.
  426.   - Fixed bug where network timeouts would happen twice.
  427.   - Added mySettings.xml workaround for Netscape and other browsers that
  428.     don't automatically open up - the user can now enter a full file
  429.     path of the browser, and we'll attempt to open that app, while
  430.     passing it the URL requested.
  431.   - mySettings.xml frontend has been integrated and related
  432.     documentation has been added (xml_my_settings.htm).
  433.   - Morbus, being bored one day, looked at every single line of 
  434.     code all over again, and tweaked and hemmed and hawed. tons
  435.     of myriad comment updatings, space cleansing, and so forth.
  436.   - We've added a Timeout of .1 second to our internal webserver, The
  437.     Timeout will ensure that the webserver is nonblocking (moving on in
  438.     the infinite loop after 1/10 second), which helps the GUI listen for
  439.     requests.
  440.   - We now override xml::simple's xmldeclaration with our own, which
  441.     solves the xml syntax error with [version='1'] when it should
  442.     be [version="1.0"].
  443.   - Error messages and name related data that was hardcoded has been
  444.     moved to its $SETTINGS equivalents for better customization.
  445.     Eventually error messages should live in mySettings.xml as well,
  446.     but that will come later.
  447.   - Because of the improved $SETTINGS configuration, we now have
  448.     better error checking for missing files (like the various
  449.     template files and myChannels.opml, etc.).
  450.   - The logfile is now opened again in the main script - only the
  451.     filehandle is referenced in Miscellaneous.pl. Our problem with
  452.     the log not being written because of a crash was because we 
  453.     didn't autoflush the buffer in our old code. This is fixed.
  454.   - Tons of variable name changes in line with improved $SETTINGS
  455.     and $TEMPLATE changes - the whole thing has basically been redone
  456.     for better support of mySettings.xml and distribution power.
  457.   - One channel bug resolved (we still need to check some of the 
  458.     uninit'd values that seem to pop up every now and then).
  459.   - Added the tidy_house() routine to clean out old channel files
  460.   - files_and_dirs.htm added to documentation.
  461.   - Tons of minor documentation fixes and additions.
  462.   - Micropayment links secretly added. Let's see if they'll notice.
  463.   - Turned (back) on the service list download - if the recent channels
  464.     list hasn't been updated for a week, we check for a new one. If it
  465.     doesn't exist, we download it (which allows us to not ship that at
  466.     the expense of a longer first startup for users).
  467.   - Only newly added channels are downloaded from the "add a channels"
  468.     screen now - previously, we would recheck all our myChannels.
  469.   - Artistic license added to docs.
  470.   - Because the XML parser has been nicely tested and the only errors
  471.     that show up are due to mismatched tags, we no longer spit out
  472.     xml error messages to the user, we just send them to the log.
  473.   - We now display an error message when there are no channels to display
  474.     on the initial page (ie. all channels timed out and no local files).
  475.   - The version check actually works now.
  476.   - ¬e split up into ¬e/&gui_note.
  477.   - Various default channel changes, including the removal of
  478.     The Motley Fool and the addition of Lockergnome...
  479.  
  480.  
  481. 0.24 (released March 19th, 2001)
  482.   - chose an almost entirely new set of default channels.
  483.   - fixed bug where numerically named services would never show.
  484.   - a simple error message is now displayed when no channels exist
  485.     under a chosen letter in the "add a channel" page.
  486.   - fixed bug where our parse_template routine thought that a "0"
  487.     was a nonexistant value, even though it could be (ie. a "0" could
  488.     mean that we want to see all services matching a number.)
  489.   - stuck the "display_home_page" routine back where it belongs, but
  490.     still as a routine. reasoning being it's the only block of code
  491.     called more than once in the main file, and it'd be lonely being
  492.     the only routine at the bottom of the file.
  493.   - documentation updated to match new <header> block within service
  494.     list, as well as to be more organized and crosslinked.
  495.   - cleanup changes to ServiceMaintenance.pl to make it more useful.
  496.   - added timeout setting using IO::Select of 20 seconds. this combat
  497.     slow networks, and should fix Geomisk's nephew's crappy connection.
  498.   - documentation can now be served/read by the webserver.
  499.   - "add channel from url" feature has been added.
  500.   - the large channel list is no longer loaded when people go
  501.     to "My Channels" and delete a channel (this saves a few seconds
  502.     if the user hadn't requested to see the channel list earlier).
  503.   - "xmlUrl" and "htmlUrl" from myChannels.opml have been changed
  504.     to "xmlurl" and "htmlurl" respectively. our code will read both
  505.     but only write the lowercase versions.
  506.   - naming.htm added to documentation.
  507.   - history.htm added to the documentation, as well as documentation
  508.     links added to the default templates. Just integrating help.
  509.   - removed Red Herring from myChannelsDefault.opml.
  510.  
  511.  
  512. 0.23 (released March 6th, 2001)
  513.   - fixed stupid misspelling in check_version.
  514.   - removed all global variable passing.
  515.   - program name is now a variable (and is now used in all socket calls).
  516.   - channel downloading within download_my_channels is now more 
  517.     informative, and allows us to more easily troubleshoot missing
  518.     channels (and dead/failing ones).
  519.   - the "unlink" on the filename has been secured, since technically
  520.     it's outside data (people could modify the myChannels.opml). We
  521.     leave the unlinks on the log file deletions alone though, since
  522.     the directory comes from Cwd and the filename internally.
  523.   - invalid xml entities/characters are now encoded when the channel
  524.     fails to be loaded the first time around. this should fix almost
  525.     all "invalid entity" errors (hopefully). there will still be
  526.     errors concerning missing tags, but we don't care about those.
  527.   - make_valid_xml moved into Miscellaneous.pl.
  528.   - large channel lists added, along with alphabetical breakdowns by page.
  529.     the current channel lists are not all that we know of on the net, but
  530.     enough to be a proof of concept. the list will be expanded in the 
  531.     future.
  532.   - scriptingNews regexps are now eval'd.
  533.   - Development moved to SourceForge.
  534.   - ServiceMaintenance.pl added - creates and maintains service lists.
  535.   - "xml_services_lists.htm" added to documentation.
  536.   - "xml_my_services.htm" added to documentation.
  537.   - removed "text" from myChannels.opml - it was a throwback to
  538.     Winer's mySubscriptions.opml, and has been replaced with "title".
  539.   - we now add "&go=1" onto the end of the delete url's so that
  540.     IE 5.5 on the PC won't think that it should display an 
  541.     xml file because of the extension in "?del=filename.xml". The
  542.     "&go=1" is ignored by AmphetaDesk.
  543.   - fixed bug where "weekdayword" and "weekdaywordabbr" were never
  544.     being correctly set. this eventually caused undef errors in
  545.     &unencode_some_html and &strip_newlines_and_tabs.
  546.   - channels that have no items to display are no longer 
  547.     displayed (previously, we saw just the title of the channel).
  548.   - make_valid_xml improved with better fixing for the <xml>
  549.     statement not being on the first line of the passed data.
  550.   - all empty elements within the channel xml are now suppressed
  551.     via &load_channel_data - this should fix some rather random,
  552.     but confusing bugs (and probably introduce some more, but hey...)
  553.   - new logo and slightly larger globe added. all images compressed.
  554.   - &load_channel_data has been added - this understands both 
  555.     raw xml data, as well as a filename... likewise, make_valid_xml
  556.     understands either raw xml data, or a filename.
  557.   - delete_channels now removes the filename from data/channels.
  558.   - delete references channel filename as opposed to xml-url.
  559.   - more html changes - icon key is now in header.
  560.   - fixed the stupid logic error in this file. 
  561.  
  562.  
  563. 0.22 (released January 21st, 2001)
  564.   - unencode_certain_html added - converts "/lt/gt to "<>.
  565.   - changed the delete code to reference xmlUrl and not htmlUrl.
  566.   - changed the delete code from "delete.ahtml?del=" to 
  567.     "my_channels.ahtml?del=" - the main reason for this is that
  568.     delete.ahtml will never exist as a template file, so we 
  569.     shouldn't define it.
  570.   - tons of html changes to clean the ui.
  571.   - added delete from home page feature.
  572.   - lots of routines now use the global variables instead of passing.
  573.   - download_channels_in has been renamed to download_my_channels.
  574.   - loading of the channel list is now cached for quicker access.
  575.   - lots of new routines to make the script even more blackboxed:
  576.     create_channel_filename, load_my_channels, sort_my_channels_by_filename,
  577.     strip_newlines_and_tabs, load_channel_list, and write_my_channels.
  578.   - comment and code cleaning - general gold plating.
  579.   - merged myChannels into the big list and checked them off.
  580.   - fixed the Netscape/Mozilla bug where POST requests would 
  581.     never be properly resolved (due to erroneous content-length).
  582.  
  583.  
  584. 0.21 (released January 15th, 2001)
  585.   - we now only load filenames that are defined in myChannels.opml.
  586.   - make_valid_xml no longer dies if the file can't be opened.
  587.   - < and > are changed to < and > in our item descriptions
  588.     so that anyone who properly encodes HTML will show correctly.
  589.   - Our template channel items are now undef'ed each time through
  590.     to fix a bug where a <description> from item 1, would appear
  591.     on all further items that didn't have a <description>.
  592.   - Removed flocking. Really only a one user system.
  593.   - Fixed bug where the submit button became a new channel.
  594.   - Fixed bug with Windows freezing / force-quitting.
  595.   - Downloading after channel add has occurs after the page displays,
  596.     not before (as before). This is so the page displays without an
  597.     overly lengthy delay. This simulates "background downloading".
  598.   - Cleaned up some uninit's when the channel $html wasn't there.
  599.   - Content-length and POST changed so more browsers will work.
  600.     This has currently been tested on: NS 4.7.x (Mac), IE 5 (Mac),
  601.     iCab 2.x (Mac) and IE 5 (Win).
  602.   - Timeout for socket connection has been moved to 15 seconds. 
  603.     People like me who have 40 channel subscriptions will wait
  604.     forever (quite rightly so) to download them all. Non - 
  605.     responding sites are a pain waiting to timeout.
  606.  
  607.  
  608. 0.20 (released January 13th, 2001)
  609.   - Add and remove channel code has been added.
  610.   - myChannelsDefault is no longer referenced in the code.
  611.   - Channel list is now updated once a day.
  612.   - Globe and XML image added to HTML templates.
  613.   - Filenames are now part of the OPML file. 
  614.   - HTML and XML urls are now available in channel title display.
  615.   - Timeouts for downloads changed to 30 seconds.
  616.   - Tweaking of ¬e output - lot cleaner output to the user,
  617.     and more helpful output to our log file. How slow is this?
  618.  
  619.  
  620. 0.17 (released January 12th, 2001)
  621.   - Channels and lists are only downloaded if the saved versions
  622.     are older than 1 hour. This makes the script even quicker.
  623.   - GET/POST now properly parsed for form data.
  624.   - List items and channel news are stripped of newlines and tabs.
  625.   - channel list is optimized but it's kludgey. needs fixing.
  626.   - .opml and .xml added to content-type extensions.
  627.   - HTML cleaned up a bit, and section names finalized.
  628.   - The old log is deleted before a new log starts.
  629.   - &mirror now supports modification dates and works so much nicer.
  630.   - Version checking is now mirrored.
  631.   - The main $socket loop is now autoflushed.
  632.   - ¬e and &error moved to Miscellaneous.pl.
  633.   - Date stamp on logging shortened, since we overwrite each run.
  634.   - All code switched to the rewritten LWP routines.
  635.   - All routines are now labeled with what they can return, as well
  636.     as the conditions for those situations. Most routines are non-fatal;
  637.     if something bad happens, then the script will just keep on going.
  638.   - The only routines that can kill the script are the parse_template
  639.     routine (cos if we can't parse templates, we won't be able to show
  640.     anything to the user), and the error routine (whose sole purpose is
  641.     to kill the script anyways).
  642.   - Timeouts during downloads are set to 45 seconds.
  643.  
  644.  
  645. 0.16 (released January 9th, 2001)
  646.   - All LWP functions rewritten using non-module code (besides
  647.     IO::Socket). This was mainly because a *compiled* runtime
  648.     on the Mac would fail on every LWP routine besides get().
  649.   - Channel download is now sorted alphabetically.
  650.   - Channel news display is now sorted by last modified. 
  651.  
  652.  
  653. 0.15 (released January 7th, 2001)
  654.   - Removed unneccesary junk from the OPML.
  655.   - Versioning code has been added.
  656.   - Finalized logo appearance.
  657.   - Fixed the annoying corrupted image problem for Windows.
  658.   - We now use mirror() instead of getstore() for downloading.
  659.   - Cleaned up comments for parse_file.
  660.   - Directories now skipped when searching for channels.
  661.   - Initialize.pl changed to Miscellaneous.pl.
  662.   - We now check to see if all our directories exist.
  663.   - Delimiter choosing cleaned up.
  664.   - Removed tainting.
  665.   - Port set to 8888 to reduce conflicts.
  666.   - OS specific libraries added.
  667.   - Stupid delimiter error fixed.
  668.   - Library handling changed a bit. 
  669.   - Quick code to display all news headines added.
  670.   - Quick code to download all channels in the subscriptions.
  671.   - Simple, default mySubscriptionsDefault.opml added.
  672.   - Added simplistic &error, which is just a die-ing shell to ¬e.
  673.   - WebServer.pl and Initialize.pl appear.
  674.  
  675.  
  676. 0.1 (released January 5th, 2001)
  677.   - First public release.
  678.  
  679.  
  680.